package com.xnyzc.lhy.finance.service.invoice;

import com.xnyzc.lhy.finance.entity.invoice.OaSysInvoiceApply;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceApplyResult;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceInvalidResult;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceQueryResult;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceResendResult;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceApplyForDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceInvalidDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceQueryDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.ResendInvoiceDiDiParam;

/**
 * <p>
 * 发票申请 服务类
 * </p>
 *
 * @author haoyfa
 * @since 2019-10-24
 */
public interface IOaSysInvoiceApplyService extends IService<OaSysInvoiceApply> {

    /**
     * 发票申请
     * @param invoiceApplyForDiDiParam
     * @return
     */
    public InvoiceApplyResult getInvoiceApplyForDiDi(InvoiceApplyForDiDiParam invoiceApplyForDiDiParam);

    /**
     * 发票查询
     * @param invoiceQueryDiDiParam
     * @return
     */
    public InvoiceQueryResult getInvoiceQueryDiDi(InvoiceQueryDiDiParam invoiceQueryDiDiParam);

    /**
     * 重发发票
     * @param resendInvoiceParam
     * @return
     */
    public InvoiceResendResult getResendInvoiceDiDi(ResendInvoiceDiDiParam resendInvoiceParam);

    /**
     * 作废发票
     * @param invoiceInvalidDiDiParam
     * @return
     */
    public InvoiceInvalidResult getInvoiceInvalidDiDi(InvoiceInvalidDiDiParam invoiceInvalidDiDiParam);

    /**
     * 开具红字发票
     * @param invoiceInvalidDiDiParam
     * @return
     */
    public InvoiceInvalidResult getRedInvoiceDiDi(InvoiceInvalidDiDiParam invoiceInvalidDiDiParam);

    /**
     * 根据滴滴发票id获取发票申请ID
     */
    public OaSysInvoiceApply selectOaSysInvoiceApplyByDidiId(String didiinvoiceId);

    /**
     * AA发票申请
     * @param invoiceApplyForDiDiParam
     * @return
     */
    InvoiceApplyResult getInvoiceAaApplyForDiDi(InvoiceApplyForDiDiParam invoiceApplyForDiDiParam);

    /**
     * AA发票查询
     * @param invoiceQueryDiDiParam
     * @return
     */
    InvoiceQueryResult getInvoiceAaQueryDiDi(InvoiceQueryDiDiParam invoiceQueryDiDiParam);

    /**
     * AA发票作废
     * @param invoiceInvalidDiDiParam
     * @return
     */
    InvoiceInvalidResult getRedInvoiceAaDiDi(InvoiceInvalidDiDiParam invoiceInvalidDiDiParam);
}
